//设置默认值
export const set_default = (val, val2 = '\t') => {
	if (empty(val)) {
		return val2;
	}
	return val;
}

//判断是否为空
export const empty = (str) => {
	if (str == '' || str == undefined || str == null) {
		return true
	}
	return false
}

//更新字符串已指定字符切割
export const update_str = (obj = {
	value: '',
	type: 'add',
	index: '0',
	'char': ','
}) => {
	if (obj.type == 'add') {
		let arr = obj.value.split(obj.char)
		arr.push(value)
		return arr.join(obj.char)
	} else {
		let arr = obj.value.split(obj.char)
		arr.splice(obj.index, 1)
		return arr.join(obj.char)
	}
}

//历史记录
export const history_arr = (type = 'get', value = '') => {
	let arr = uni.getStorageSync('history_arr')
	let length = 12; //储存的最大条数
	if (empty(arr)) {
		arr = []
		uni.setStorageSync('history_arr', arr)
	}
	if (type == 'get') {
		return arr
	} else if (type == 'push') {
		if (arr.indexOf(value) >= 0 || value == '') {
			return arr;
		}
		if (arr.length < length) {
			arr.unshift(value)
		} else {
			arr.unshift(value)
			arr.splice(length, 1)
		}
		uni.setStorageSync('history_arr', arr)
		return arr
	} else if (type == 'clear') {
		uni.setStorageSync('history_arr', [])
	}
}

//获取时间戳
export const get_timestamp = (time = get_date()) => {
	time = time.replace(/-/g, '/')
	let data = new Date(time);
	return parseInt(Number(data) / 1000);
}
//获取时间
export const get_date = (fmt = 'YYYY-MM-DD HH:mm:ss', date = new Date()) => {
	if (!date) {
		return ''
	}
	if (typeof date === 'string') {
		date = new Date(date.replace(/-/g, '/'))
	}
	if (typeof date === 'number') {
		date = new Date(date)
	}
	var o = {
		'M+': date.getMonth() + 1,
		'D+': date.getDate(),
		'h+': date.getHours() % 12 === 0 ? 12 : date.getHours() % 12,
		'H+': date.getHours(),
		'm+': date.getMinutes(),
		's+': date.getSeconds(),
		'q+': Math.floor((date.getMonth() + 3) / 3),
		'S': date.getMilliseconds()
	}
	var week = {
		'0': '\u65e5',
		'1': '\u4e00',
		'2': '\u4e8c',
		'3': '\u4e09',
		'4': '\u56db',
		'5': '\u4e94',
		'6': '\u516d'
	}
	if (/(Y+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
	}
	if (/(E+)/.test(fmt)) {
		fmt = fmt.replace(RegExp.$1, ((RegExp.$1.length > 1) ? (RegExp.$1.length > 2 ? '\u661f\u671f' : '\u5468') :
			'') + week[date.getDay() + ''])
	}
	for (var k in o) {
		if (new RegExp('(' + k + ')').test(fmt)) {
			fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (('00' + o[k]).substr(('' + o[k])
				.length)))
		}
	}
	return fmt

}
export const format_num = (num) => {
	if (empty(num)) {
		return '0'
	} else if (num > 100) {
		return 100
	}
	return num.toFixed(2)
}
//富文本处理
export const format_html = (html) => {
	let newContent = html.replace(/<img[^>]*>/gi, function(match, capture) {
		match = match.replace(/style="[^"]+"/gi, '').replace(/style='[^']+'/gi, '');
		match = match.replace(/width="[^"]+"/gi, '').replace(/width='[^']+'/gi, '');
		match = match.replace(/height="[^"]+"/gi, '').replace(/height='[^']+'/gi, '');
		return match;
	});
	newContent = newContent.replace(/style="[^"]+"/gi, function(match, capture) {
		match = match.replace(/width:[^;]+;/gi, 'max-width:100%;').replace(/width:[^;]+;/gi,
			'max-width:100%;');
		return match;
	});
	newContent = newContent.replace(/<br[^>]*\/>/gi, '');
	newContent = newContent.replace(/\<img/gi,
		'<img style="max-width:100%;height:auto;display:block;margin-top:0;margin-bottom:0;"');
	return newContent;
}
export const replaceText = (val)=> {
  if (val != null && val != "") {
    var re1 = new RegExp("<.+?>|&.+?;","g"); //匹配html标签的正则表达式，"g"是搜索匹配多个符合的内容
    var msg = val.replace(re1,""); //执行替换成空字符
    msg = msg.replace(/\s/g,""); //去掉所有的空格（中文空格、英文空格都会被替换）
    msg = msg.replace(/[\r\n]/g,""); //去掉所有的换行符
    return msg
  } else return ''
}
//随机数
export const mt_rand = (min = 0, max = 100) => {
	return Math.floor(Math.random() * (max - min + 1) + min)
}
//手机号格式化
export const format_tel = (tel = '') => {
	if (empty(tel)) {
		return false;
	}
	return String(tel).slice(0, 3) + '****' + String(tel).slice(-4)
}

//小程序二维码参数 转化对象  （getUnlimited 这种方式生成）
export const qrCodeQuery = (query) => {
	if (empty(query)) {
		return {}
	}
	query = decodeURIComponent(query);
	let obj = {}
	query = query.split('&')
	query.forEach((item, index) => {
		let arr = item.split('=')
		Object.defineProperty(obj, arr[0], {
			value: arr[1],
			writable: true,
			enumerable: true,
			configurable: true
		})
	})
	return obj
}

export const sliceDate = (str, len = 5) => {
	if (typeof str == 'string' || typeof str == 'object') {
		return str.slice(len);
	}
}

//节流
var timeout;
export const debounce = function(func, wait = 500) {

	var context = this;
	var args = arguments;
	clearTimeout(timeout)
	timeout = setTimeout(function() {
		func.apply(context, args)
	}, wait);
}
export function debounce2(fn, delay = 100) {
	let timer
	return function() {
		const that = this
		const _args = arguments // 存一下传入的参数
		if (timer) {
			clearTimeout(timer)
		}
		timer = setTimeout(function() {
			fn.apply(that, _args)
		}, delay)
	}
}

// 节流函数
// 思路： 第一次先设定一个变量true，
// 第二次执行这个函数时，会判断变量是否true，
// 是则返回。当第一次的定时器执行完函数最后会设定变量为flase。
// 那么下次判断变量时则为flase，函数会依次运行。
export function throttle(fn, delay = 100) {
	// 首先设定一个变量，在没有执行我们的定时器时为null
	var timer = null
	return function() {
		// 当我们发现这个定时器存在时，则表示定时器已经在运行中，需要返回
		if (timer) return
		timer = setTimeout(() => {
			fn.apply(this, arguments)
			timer = null
		}, delay)
	}
}



export const getScoreText = (score = 0) => {
	if (score == 5) {
		return '非常好'
	} else if (score > 4) {
		return '很好'
	} else if (score > 3) {
		return '好'
	} else {
		return '一般'
	}
}